package edu.upc.inmobiliaria.repository.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import edu.upc.inmobiliaria.domain.EstadoInmuebleBean;
import edu.upc.inmobiliaria.repository.EstadoInmuebleRepository;

@Repository
public class JdbcEstadoInmuebleRepository implements EstadoInmuebleRepository {
	private SimpleJdbcTemplate simpleJdbcTemplate;

	@Autowired
	public JdbcEstadoInmuebleRepository(DataSource dataSource) {
		this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
	}

	@Override
	public EstadoInmuebleBean getEstadoInmueble(int id) {
		EstadoInmuebleBean estadoInmueble = null;
		try {
			String sql = "SELECT ID,DESCRIPCION FROM T_ESTADOINMUEBLE WHERE ID=?";
			RowMapper<EstadoInmuebleBean> mapper = new RowMapper<EstadoInmuebleBean>() {
				public EstadoInmuebleBean mapRow(ResultSet rs, int rowNum)
						throws SQLException {
					int id = rs.getInt("ID");
					String descripcion = rs.getString("DESCRIPCION");
					EstadoInmuebleBean tipoinmueble = EstadoInmuebleBean
							.crearEstadoInmueble(id, descripcion);
					return tipoinmueble;
				}
			};

			estadoInmueble = this.simpleJdbcTemplate.queryForObject(sql,
					mapper, id);
		} catch (EmptyResultDataAccessException ex) {
			return null;
		}
		return estadoInmueble;
	}

	@Override
	public boolean registrar(EstadoInmuebleBean estadoinmueblebean,
			String string) {
		try {
			String sql = "INSERT INTO T_ESTADOINMUEBLE (ID,DESCRIPCION) VALUES (?,?)";
			this.simpleJdbcTemplate.update(sql, estadoinmueblebean.getId(),
					estadoinmueblebean.getDescripcion());
			return true;
		} catch (DataAccessException e) {

			return false;
		}
	}

	@Override
	public boolean actualizar(EstadoInmuebleBean estadoinmueble, String string) {
		try {
			String sql = "UPDATE T_ESTADOINMUEBLE SET DESCRIPCION=? WHERE ID=?";
			this.simpleJdbcTemplate.update(sql,
					estadoinmueble.getDescripcion(), estadoinmueble.getId());
			return true;
		} catch (DataAccessException e) {
			return false;
		}
	}

	@Override
	public boolean eliminar(int id, String string) {
		try {
			String sql = "DELETE FROM T_ESTADOINMUEBLE WHERE ID=?";
			this.simpleJdbcTemplate.update(sql, id);
			return true;
		} catch (DataAccessException e) {
			return false;
		}
	}

	@Override
	public boolean actualizarVenta(int id, int nuevoValor) {
		// TODO Auto-generated method stub
		return false;
	}
}
